home *** CD-ROM | disk | FTP | other *** search
- ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬
- (MATCH03.DOC)
- é¿ïCèyé▓é¡éτé¡âvâìâOâëâ~âôâOôⁿûσ ö╘èOò╥ üuâGâLâXâpü[âgâVâXâeâÇé╠ì∞ɼüv
- ìLêΣü@É╜
- ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬
-
- ü¢û╪ì\æó
-
- é▒é▒é┼é═üAâGâLâXâpü[âgâVâXâeâÇé╠ì∞ɼé┼üAâoâbâNâgâëâbâNé╠Ä└î╗é╔òKùvé╞é╚
-
- éΘüuû╪ì\æó(tree structer)üvé╔é┬éóé─Éαû╛é╡é▄é╖üBüuû╪(tree)üvé═üAÉ▀üiâmü[
-
- âhüjé╞î─é╬éΩéΘùvæfé╔æ╬é╡é─üAèKæwôIé╚è╓îWüiÉeÄqè╓îWüjé≡ò\é╡é╜éαé╠é┼é╖üBÉg
-
- ï▀é╚ùßé┼é═üAâfâBâîâNâgâèé╠èKæwì\æóé¬û╪é╔éáé╜éΦé▄é╖üBâfâBâîâNâgâèé╔üuâïü[
-
- âgâfâBâîâNâgâèüvé¬éáéΘéµéñé╔üAû╪é╔éαüuì¬üiâïü[âgüjüvé╞î─é╬éΩéΘÉ▀é¬æ╢ì▌é╡
-
- é▄é╖üB
-
-
- (root)
- é` äƒäƒäƒäƒäƒäƒäƒäƒ âîâxâïéO
- ü^übü_ ü¬
- ü^ üb ü_
- éa éb éc û╪ âîâxâïéP
- ü^übü_ übü_ é╠
- ü^ üb ü_ üb ü_ ìé
- éd ée éf ég éh é│ âîâxâïéQ
- ü^ ü_
- ü^ ü_ ü½
- éi éj äƒäƒäƒäƒäƒ âîâxâïéR
-
-
- É} 6 : êΩö╩ôIé╚û╪ì\æóé╠êΩùß
-
-
- û╪é≡É}Īé╖éΘÅΩìçüAèKæwè╓îWé¬é═é┴é½éΦéφé⌐éΘéµéñé╔üAì¬é≡Åπé╔é╡é─üAô»é╢èK
-
- æwé╔éáéΘÉ▀é≡ò└é╫é─Åæé½é▄é╖üB
-
- ì¬é⌐éτâîâxâï 0üAâîâxâï 1 é╞èKæwé≡Éöéªé─éóé½üAì┼ë║æwé╠É▀é▄é┼é╠èKæwÉöé≡
-
- üuû╪é╠ìéé│üvé╞éóéóé▄é╖üBû╪é═üAéáéΘÉ▀é⌐éτë║é╠òöò¬é≡É╪éΦÅoé╡é╜éαé╠éαüAû╪é╞
-
- é╡é─é╠ɽÄ┐é≡Ä¥é┴é─éóé▄é╖üBé▒éΩé≡üuòöò¬û╪üvé╞éóéóé▄é╖üB
-
- û╪é═üAéáéΘÉ▀é⌐éτæ╝é╠É▀é╔ÄèéΘüuîoÿHüvé≡ìléªéΘé▒é╞é¬é┼é½é▄é╖üBé╜é╞éªé╬üA
-
- é`é⌐éτéié╔é═üAé`ü|éaü|éfü|éié╞éóéñîoÿHé¬éáéΦé▄é╖é╦üBé▒éΩé═üAâfâBâîâNâgâè
-
- éΓâtâ@âCâïé≡ÄwÆΦé╖éΘÄ₧é╠âpâXé╞ô»é╢é┼é╖üB
-
- éáéΘÉ▀é⌐éτì¬é╠ò√îⁿé╔é│é⌐é╠é┌éΘÄ₧üAôrÆåé┼Æ╩é┴é─éóé¡É▀é≡üuɵæcüvé╞éóéóüA
-
- Æ╝É┌îqé¬é┴é─éóéΘÉ▀é≡üuÉeüvé╞éóé▄é╖üBé▒éΩé═üAïté⌐éτî⌐éΘé╞üuÄqæ╖üvé╞üuÄqüv
-
- é╞éóéñè╓îWé╔é╚éΦé▄é╖üBÄqé≡Ä¥é╜é╚éóÉ▀é≡ô┴é╔üuùtüvé╞î─é╘é▒é╞é¬éáéΦé▄é╖üBÅπ
-
- É}é┼éóéñé╞üAéfé═éiüCéjé╠Éeé┼üAéié═éfé╠Äqé╔é╚éΦé▄é╖üBéié═Äqé≡Ä¥é┴é─éóé╚éó
-
- é╠é┼ùté╞é╚éΦé▄é╖üB
-
- Äqé═üAüuì╢ < ëEüvé╠Åçö╘é┼É▀é╔èiö[é╖éΘé╠é¬êΩö╩ôIé┼é╖üBé▒éΩé≡üuÅçÅÿû╪üv
-
- é╞éóéóé▄é╖üBé▄é╜üAÅçö╘é¬û│éóû╪é≡üuû│ÅçÅÿû╪üvé╞î─é╤é▄é╖üB
-
- É▀é¬Ä¥é┴é─éóéΘÄqé╠Éöé≡üuăÉöüvé╞éóéóé▄é╖üBÅπÉ}é╠ÅΩìçüAé`é═ 3 é┬é╠ÄqéaüA
-
- ébüAécé≡Ä¥é┴é─éóéΘé╠é┼üAé`é╠ăÉöé═ 3 é╞é╚éΦé▄é╖üBæSé─é╠É▀é╠ăÉöé≡ n é╔æ╡
-
- éªé╜ÅçÅÿû╪é≡üun ò¬û╪üvé╞î─é╤é▄é╖üBô┴é╔üAăÉöé¬ 2 é╠ô±ò¬û╪é═üAâvâìâOâëâÇ
-
- é┼éµé¡ÄgéφéΩéΘâfü[â^ì\æóé┼é╖üB
-
-
- (root)
- 18
- ü^ ü_
- ü^ ü_
- ü^ ü_
- ü^ ü_
- ü^ ü_
- 14 22
- ü^ ü_ ü^ ü_
- ü^ ü_ ü^ ü_
- 12 16 20 24
- ü^ ü_ ü^ ü_ ü^ ü_ ü^ ü_
- 11 13 15 17 19 21 23 25
-
-
- É} 7 : ô±ò¬û╪é╠êΩùß
-
-
- ÅπÉ}é╔ô±ò¬û╪é╠ùßé≡Īé╡é▄é╖üBô±ò¬û╪é┼é═üAÉ▀é╔êΩé┬é╠âfü[â^é≡èiö[é╡é▄é╖üB
-
- é╗é╡é─üAé╗é╠É▀é╠ì╢æñé╠Äqé╔é═żé│éóâfü[â^é≡üAëEæñé╠Äqé╔é═æσé½éóâfü[â^é¬öz
-
- Æué│éΩéΘéµéñé╔û╪é≡ì\ɼé╡é▄é╖üB
-
- ô±ò¬û╪é═âfü[â^é╠ÆTì⌡üEæ}ôⁿé≡ìéæ¼é╔ìséñé▒é╞é¬é┼é½éΘâfü[â^ì\æóé┼é╖üBé╜é╞
-
- éªé╬üAÅπÉ}é╠ô±ò¬û╪é⌐éτ 19 é≡ÆTé╡é─é▌é▄é╡éσéñüBé▄é╕üAroot é╠ 18 é╞öΣèré╡
-
- é▄é╖üB18 < 19 é┼é╖é⌐éτüAëEæñé╠Äqé≡é╜é╟éΦ 22 é╞öΣèré╡é▄é╖üBìíôxé═ 19 < 22
-
- é╚é╠é┼ì╢æñé╠Äqé≡é╜é╟éΦé▄é╖üBăé═ 20 é╞öΣèré╡ 19 < 20 é╚é╠é┼ì╢æñé╠Äqé≡é╜
-
- é╟éΦüAé▒é▒é┼ 19 é≡î⌐é┬é»éΘé▒é╞é¬é┼é½é▄é╖üB
-
- ô±ò¬û╪é╠ÆTì⌡é═ô±ò¬ÆTì⌡é╞ô»é╢î┤ù¥é┼é╖üBì╢ëEé╟é┐éτé⌐é╠Äqé≡é╜é╟éΘé╜é╤é╔üA
-
- ÆTì⌡é╖éΘâfü[â^Éöé═ö╝ò¬é╔é╚éΦé▄é╖üB ÅπÉ}é╠ÅΩìçé┼éαüAÆTì⌡é╖éΘâfü[â^Éöé¬15,
-
- 7, 3, 1 é╞é╚éΦüAì┼îπé╔î⌐é┬é»éΘé▒é╞é¬é┼é½é▄é╡é╜üB
-
- âfü[â^Éöé≡ N é╞é╖éΘé╞üAÉⁿî`ÆTì⌡é┼é═ò╜ï╧é┼ N/2 ë±é╠öΣèré¬òKùvé╔é╚éΦé▄é╖
-
- é¬üAô±ò¬û╪é≡Ägéñé╞ log N Æ÷ôxé╠ë±Éöé┼Ä√é▄éΦé▄é╖üBé╜é╞éªé╬üAâfü[â^é¬ 100
-
- î┬éáéΘÅΩìçüAÉⁿî`ÆTì⌡é┼é═ 50 ë±âfü[â^é≡öΣèré╡é╚é»éΩé╬éóé»é╚éóé╠é╔üAô±ò¬û╪
-
- é┼é═ 7 ë±Æ÷ôxé╠öΣèré┼ì╧é▐éφé»é┼é╖üB
-
- é╜é╛é╡üAé▒éΩé═ì╢ëEé╠òöò¬û╪é╠âoâëâôâXé¬é╞éΩé─éóéΘù¥æzôIé╚Å≤æ╘é┼é╠ÿbé┼é╖üB
-
- âoâëâôâXé¬ò÷éΩéΘé╞ô±ò¬û╪é╠ɽö\é═ù≥ë╗é╡üAì┼ê½é╠ÅΩìçé═Éⁿî`ÆTì⌡é╞ô»é╢é╔é╚é┴
-
- é─é╡é▄éóé▄é╖üBé╗é▒é┼üAì╢ëEé╠âoâëâôâXé≡êΩÆΦé╠ö═ê═é╔Ä√é▀éΘüuò╜ìtû╪üvé¬ìlê─
-
- é│éΩé─éóé▄é╖é¬üAìíë±é═û╪ì\æóé╠Éαû╛é¬û┌ôIé╚é╠é┼üAùßæΦé╞é╡é─ÆPÅâé╚ô±ò¬û╪é≡
-
- ĵéΦÅπé░é▄é╖üB
-
-
- Lisp é╠ÅΩìçüAû╪é═âèâXâgé≡Ägé┴é─ò\é╖é▒é╞é¬é┼é½é▄é╖üBé╜é╞éªé╬üAâèâXâgé╠
-
- æµ 1 ùvæfé¬É▀é╠Äφù▐é≡ò\é╡üAÄcéΦé╠ùvæfé╔Äqé≡èiö[é╖éΘé╞üAÉ} 6 é╠û╪é═ăé╠éµ
-
- éñé╔ò\é╖é▒é╞é¬é┼é½é▄é╖üB
-
-
- (A (B (E) (F) (G (J) (K))) (C) (D (H)(I)))
-
- (A
- (B
- (E)
- (F)
- (G
- (J)
- (K)))
- (C)
- (D
- (H)
- (I)))
-
- É} 8 : û╪ì\æóé╠âèâXâgò\î╗
-
-
- êΩù±é╔ò└é╫éΘé╞üAé╚é╔é¬é╚é±é╛é⌐é│é┴é╧éΦéφé⌐éΦé▄é╣é±é¬üAô»é╢âîâxâïé╠É▀é≡ò└
-
- é╫éΘé╞üAé╗é╠ì\æóé¬ù╟é¡éφé⌐éΘé╞Ävéóé▄é╖üB
-
- ô±ò¬û╪éαô»ùlé╔âèâXâgé┼ò\é╖é▒é╞é¬é┼é½é▄é╖üBâèâXâgé╠ɵô¬é¬âfü[â^é┼üAăé¬
-
- ì╢æñé╠ÄqüAì┼îπé╔ëEæñé╠Äqé≡èiö[é╡é▄é╖üBÄqé¬é╚éóÅΩìçé═ nil é≡èiö[é╖éΘé▒é╞
-
- é╔é╖éΘé╞üAÉ} 7 é╠ô±ò¬û╪é═ăé╠éµéñé╔ò\é╣é▄é╖üB
-
-
- (18 (14 (12 (11 nil nil) (13 nil nil)) (16 (15 nil nil) (17 nil nil)))
- (22 (20 (19 nil nil) (21 nil nil)) (24 (23 nil nil) (25 nil nil))))
-
- (18
- (14
- (12
- (11 nil nil)
- (13 nil nil))
- (16
- (15 nil nil)
- (17 nil nil)))
- (22
- (20
- (19 nil nil)
- (21 nil nil))
- (24
- (23 nil nil)
- (25 nil nil))))
-
- É} 9 : ô±ò¬û╪é≡âèâXâgé┼ò\é╡é╜ÅΩìç
-
-
- é▒é╠éµéñé╔üAâèâXâgé≡Ägéªé╬ô±ò¬û╪é┼éαæ╜ò¬û╪é┼éαâoâôâoâôì∞éΩéΘé╠é┼é╖é¬üA
-
- é▒é╠âèâXâgé≡î⌐é╜é╛é»é┼é═üAô┴é╔ÆPÅâé╔ò└é╫é╜é╛é»é╠âèâXâgé┼é═üAé╗éΩé¬ô±ò¬û╪
-
- é≡ò\é╡é─éóéΘé╞ù¥ë≡é╖éΘé╠é═ìóô∩é┼é╡éσéñüBé╗é▒é┼üAâNâëâXé╠Åoö╘é╞é╚éΘéφé»é┼
-
- é╖üB
-
- é╜é╞éªé╬üAô±ò¬û╪é╠É▀é═ăé╠éµéñé╔ò\é╖é▒é╞é¬é┼é½é▄é╖üB
-
-
- List 22 : ô±ò¬û╪é╠É▀
-
- 1 (defclass Node ()
- 2 (object ; âfü[â^
- 3 left ; ì╢é╠Äq
- 4 right)) ; ëEé╠Äq
-
-
- âXâìâbâg object é╔âfü[â^é≡èiö[é╡üAleft é═ì╢æñé╠ÄqüAright é═ëEæñé╠Äqé≡
-
- èiö[é╡é▄é╖üBâXâìâbâgé═ Lisp é╠âfü[â^é┼éáéΩé╬ë╜é┼éαèiö[é╖éΘé▒é╞é¬é┼é½éΘé╠
-
- é┼üAô»é╢âNâëâXé╠âCâôâXâ^âôâXé┼éαâXâìâbâgé╔âZâbâgé╖éΘé▒é╞é¬é┼é½éΘé╠é┼é╖üB
-
- é╡é╜é¬é┴é─üAâXâìâbâg left é⌐éτâfü[â^é≡ĵéΦÅoé╣é╬üAì╢æñé╠É▀é╓ê┌ô«é╖éΘé▒é╞
-
- é¬é┼é½üAright é⌐éτâfü[â^é≡ĵéΦÅoé╣é╬üAëEæñé╠É▀é╓ê┌ô«é╖éΘé▒é╞é¬é┼é½é▄é╖üB
-
- Äqé¬é╚éóÅΩìçüAleft é╞ right é╔é═ nil é≡âZâbâgé╖éΘé▒é╞é╔é╡é▄é╡éσéñüB
-
- é┼é═Ä└ì█é╔üAô±ò¬û╪é≡æÇì∞é╖éΘâNâëâXé≡ì∞é┴é─é▌é▄é╖üBâNâëâXû╝é═ Tree é╞é╡
-
- é▄é╡é╜üB
-
-
- List 23 : ô±ò¬û╪
-
- 1 (defclass Tree ()
- 2 (root)) ; âïü[âg
-
-
- âNâëâX Tree é═üAô±ò¬û╪é╠ì¬ root é≡èiö[é╖éΘé╛é»é┼é╖üBÄ└ì█é╠ô±ò¬û╪é═âNâëâX
-
- Node é≡Ägé┴é─Ä└î╗é╡é▄é╖üBé╞é▒éδé┼üAô±ò¬û╪é≡æÇì∞é╖éΘÅΩìçüAâfü[â^é╠öΣèrè╓
-
- Éöé¬òKùvé╔é╚éΦé▄é╖üBé╜é╞éªé╬üAÉöÆlé≡èiö[é╖éΘé╠é┼éáéΩé╬üAÉöÆlé╠öΣèrè╓Éöé≡
-
- Ägé┴é─ì∞éΩé╬éóéóé╠é┼é╖é¬üAé╗éΩé┼é═ÉöÆlÉΩùpé╠ô±ò¬û╪é╞é╚é┴é─é╡é▄éóé▄é╖é╦üB
-
- âfü[â^é╠î^é╔éµé┴é─Ä⌐ô«ôIé╔öΣèrè╓Éöé¬ò]ë┐é│éΩéΘé╞üAêΩé┬é╠ô±ò¬û╪é≡ì∞éΘé╛é»
-
- é┼üAé╟é±é╚âfü[â^é╔é┼éαæ╬ë₧é╖éΘé▒é╞é¬é┼é½é▄é╖üBé▒éΩé═üAâüâ\âbâhé≡Ägéªé╬è╚
-
- ÆPé╔Ä└î╗é┼é½é▄é╖üBé╗é▒é┼üAô±ò¬û╪é≡ÄgéñÄ₧é╔é═üAăé╠âüâ\âbâhé≡ÆΦï`é╖éΘé▒é╞
-
- é╔é╡é▄é╖üB
-
-
- compare-object obj1 obj2
-
- OUTPUT : obj1 < obj2 --> -1
- obj1 = obj2 --> 0
- obj1 > obj2 --> 1
-
-
- compare-object é═ obj1 é╞ obj2 é≡öΣèré╡üA-1, 0, 1 é╠éóé╕éΩé⌐é╠Ælé≡ò╘é╡é▄
-
- é╖üBé▒éΩé═üAébé╠òWÅÇè╓Éö strcmp() é╚é╟é╞ô»é╢Ädùlé┼é╖é╦üBé╜é╞éªé╬üAÉöÆlé≡
-
- èiö[é╖éΘÅΩìçé═üAăé╠éµéñé╚ÆΦï`é╔é╚éΘé┼é╡éσéñüB
-
-
- List 24 : ÉöÆlé≡èiö[é╖éΘÅΩìç
-
- 1 (defmethod compare-object ((n1 number) (n2 number))
- 2 (cond ((= n1 n2) 0)
- 3 ((< n1 n2) -1)
- 4 (t 1)))
-
-
- Æ╩Åφé╠âfü[â^î^é┼éαüAâüâ\âbâhé═ÆΦï`é┼é½éΘé▒é╞é≡ÄvéóÅoé╡é─é¡é╛é│éóüB
-
-
- é╗éΩé┼é═üAâNâëâX Tree é╠âüâ\âbâhé≡ì∞éΦé▄é╖üBé▄é╕üAô±ò¬û╪é╠Æåé⌐éτâfü[â^
-
- é≡ÆTì⌡é╖éΘ search-tree é┼é╖üB
-
-
- List 25 : ÆTì⌡é╖éΘ
-
- 1 (defmethod search-tree ((tree Tree) data)
- 2 (search-node (slot-value tree 'root) data))
-
-
- search-tree é═ data é≡î⌐é┬é»é╜éτ t é≡ò╘é╡üAî⌐é┬é⌐éτé╚éóÅΩìçé═ nil é≡ò╘
-
- é╡é▄é╖üBÄ└ì█é╠ÄdÄûé═ search-node é┼ìséóé▄é╖üB
-
-
- List 26 : ÆTì⌡û{æ╠
-
- 1 (defun search-node (node data)
- 2 (if node
- 3 (with-slots (object left right) node
- 4 (case (compare-object data object)
- 5 (0 t)
- 6 (1 (search-node right data))
- 7 (-1 (search-node left data))))))
-
-
- âüâ\âbâhé╞é╡é─ÆΦï`é╡é╚é⌐é┴é╜é╠é═üAê°Éö node é╔ nil é¬âZâbâgé│éΩéΘÅΩìç
-
- é¬éáéΘé⌐éτé┼é╖üB
-
- é▄é╕üAê°Éö node é¬ nil é┼é╚éóé▒é╞é≡èmöFé╡é▄é╖üBé╗é╠ÅΩìçüAnode é╔é═âNâë
-
- âX Node é╠âCâôâXâ^âôâXé¬âZâbâgé│éΩé─éóéΘé╠é┼üAé╗é▒é╔èiö[é│éΩé─éóéΘ object
-
- é╞ data é≡ compare-object é┼öΣèré╡é▄é╖üBò╘éΦÆlé¬ 0 é╚éτé╬üAâfü[â^é≡î⌐é┬
-
- é»é╜é╠é┼ t é≡ò╘é╡é▄é╖üB1 é┼éáéΩé╬ data é═ object éµéΦéαæσé½éóé╠é┼üAëEæñ
-
- é╠Äqé≡é╜é╟éΦé▄é╖üB-1 é┼éáéΩé╬ data é═ object éµéΦéαżé│éóé╠é┼üAì╢æñé╠Äq
-
- é≡é╜é╟éΦé▄é╖üBé▒é╠Åêù¥é═ì─ïAé≡Ägéªé╬è╚ÆPé┼é╖üBright éΓ left é╔ nil é¬âZâb
-
- âgé│éΩé─éóéΩé╬üAì┼Åëé╠ê°Éöâ`âFâbâNé╔éµé┴é─üAì─ïAî─é╤Åoé╡é¬ÆΓÄ~é╡é─ nil
-
- é≡ò╘é╖é▒é╞é╔é╚éΦé▄é╖üB
-
-
- ăé═ô±ò¬û╪é╔âfü[â^é≡æ}ôⁿé╖éΘ insert-tree é┼é╖üB
-
-
- List 27 : æ}ôⁿé╖éΘ
-
- 1 (defmethod insert-tree ((tree Tree) data)
- 2 (setq root (insert-node (slot-value tree 'root) data)))
-
-
- insert-tree é═âNâëâX Tree é╠âüâ\âbâhé┼é╖üBÄ└ì█é╠ÄdÄûé═ insert-node é┼
-
- ìséóé▄é╖üBinsert-node é═âfü[â^é≡æ}ôⁿé╡é╜ÉVé╡éóòöò¬û╪é≡ò╘é╖è╓Éöé┼é╖üBé┼é═üA
-
- insert-node é≡Éαû╛é╡é▄é╡éσéñüB
-
-
- List 28 : æ}ôⁿû{æ╠
-
- 1 (defun insert-node (node data)
- 2 (if (null node)
- 3 (make-instance 'Node 'object data)
- 4 (with-slots (object left right) node
- 5 (case (compare-object data object)
- 6 (1 (setq right (insert-node right data)))
- 7 (-1 (setq left (insert-node left data))))
- 8 node)))
-
-
- ê°Éö node é¬ nil é╠ÅΩìçé═üAÉVé╡éóÉ▀é≡ì∞éΦé╗éΩé≡ò╘é╡é▄é╖üBé╜é╞éªé╬ root
-
- é¬ nil é╠ÅΩìçüAinsert-node é┼ÉVé╡éóÉ▀é¬ò╘é│éΩüAé╗éΩé≡ insert-tree é┼ root
-
- é╔âZâbâgé╡é▄é╖üB
-
- É▀ node é¬ù^éªéτéΩé╜ÅΩìçé═üAcompare-object é┼ object é╞ data é≡öΣèré╡
-
- é▄é╖üBobject éµéΦ data é¬æσé½éóé╠é┼éáéΩé╬ëEæñé╠Äqé≡é╜é╟éΦüAżé│é»éΩé╬ì╢
-
- æñé╠Äqé≡é╜é╟éΦé▄é╖üBé▒é╠Ä₧üAinsert-node é╠ò╘éΦÆlé≡âXâìâbâgé╔âZâbâgé╡é▄é╖üB
-
- éαé╡éαüAâXâìâbâgé¬ nil é┼éáéΩé╬üAé▒é▒é╔ÉVé╡éóÄqé¬æ}ôⁿé│éΩé▄é╖üBdata é╞
-
- object é¬ôÖé╡éóÅΩìçé═üAÉVé╡éóâfü[â^é≡æ}ôⁿé╖éΘòKùvé═é╚éóé╠é┼üAë╜éαìséóé▄
-
- é╣é±üBîπé═üAæ}ôⁿé│éΩé╜òöò¬û╪é≡ò╘é╖üAé┬é▄éΦüAê°Éöé╠ node é≡é╗é╠é▄é▄ò╘é╣é╬
-
- éóéóé╠é┼é╖üBîïï╟üAÄqé≡èiö[é╡é─éóéΘ left é▄é╜é═ right é╔é═üAô»é╢Äqé¬ì─ôx
-
- âZâbâgé│éΩéΘé▒é╞é╔é╚éΦé▄é╖üBû│æ╩é╚éµéñé╔ÄvéφéΩéΘé⌐éαé╡éΩé▄é╣é±é¬üAé╗é╠ò¬
-
- é╛é»âvâìâOâëâÇé¬è╚ÆPé╔é╚éΘé╠é┼é╖üB
-
-
- ăé═üAâfü[â^é≡ò\Īé╖éΘè╓Éö print-tree é≡ì∞éΦé▄é╖üB
-
-
- List 29 : ô±ò¬û╪é≡ò\Īé╖éΘ
-
- 1 (defmethod print-tree ((tree Tree))
- 2 (print-node (slot-value tree 'root)))
-
-
- Ä└ì█é╠ÄdÄûé═ print-node é┼ìséóé▄é╖üBé╞é▒éδé┼üAû╪é╠æSé─é╠É▀é≡ïKæÑôIé╚ÅçÅÿ
-
- é┼ë±éΘé▒é╞é≡üuÅäë±(traverse)üvé╞éóéóé▄é╖üBé▒é╠Æåé┼Ådùvé╚é╠é¬Äƒé╠ò√û@é┼é╖üB
-
-
- 1. ìsé½é¬é»Åç
-
- é▄é╕É▀é╠âfü[â^é≡Åoù═é╡üAé╗é╠îπüAì╢é╠ÄqüAëEé╠Äqé╠Åçö╘é┼Åoù═üB
-
- 2. ïAéΦé¬é»Åç
-
- ì╢é╠ÄqüAëEé╠Äqé≡Åoù═é╡é─é⌐éτüAÉ▀é╠âfü[â^é≡Åoù═üB
-
- 3. Æ╩éΦé¬é»Åç
-
- ì╢é╠Äqé≡Åoù═é╡é─é⌐éτüAÉ▀é╠âfü[â^é≡Åoù═é╡üAì┼îπé╔ëEé╠Äqé≡Åoù═üB
-
-
- û╝æOé╠ùRùêé═üAÉ▀é╠âfü[â^é≡Åoù═é╖éΘâ^âCâ~âôâOé⌐éτé½é─éóé▄é╖üBÉ▀é╔ì┼Åëé╔ô₧
-
- ÆBé╡é╜Ä₧é╔Åoù═é╖éΘé╠é¬üuìsé½é¬é»üvüAì╢ëEé╠Äqé≡Åoù═é╡é─û▀é┴é─é½é╜Ä₧é╔Åoù═
-
- é╖éΘé╠é¬üuïAéΦé¬é»üvüAì╢é╠Äqé≡Åoù═é╡é─û▀é┴é─é½é╜Ä₧é╔üAëEé╠Äqé≡Åoù═é╖éΘæO
-
- é╔É▀é╠âfü[â^é≡Åoù═é╖éΘé╠é¬üuÆ╩éΦé¬é»üvé┼é╖üB
-
-
- ô±ò¬û╪é╠ÅΩìçüAÆ╩éΦé¬é»Åçé┼âfü[â^é≡Åoù═é╖éΘé╞üAâ\ü[âgé╡é╜Åoù═îïë╩é≡ô╛éΘ
-
- é▒é╞é¬é┼é½é▄é╖üBé╗éΩé┼é═üAprint-node é≡ì∞éΦé▄é╡éσéñüB
-
-
- List 30 : Æ╩éΦé¬é»Åçé┼Åoù═
-
- 1 (defun print-node (node)
- 2 (if node
- 3 (with-slots (object left right) node
- 4 (print-node left)
- 5 (print-object object)
- 6 (print-node right))))
-
-
- print-node éαì─ïAé≡Ägéªé╬è╚ÆPé┼é╖üBé▄é╕ê°Éö node é¬ nil é┼é╚éóé▒é╞é≡èmöF
-
- é╡é▄é╖üBîπé═üAì╢æñé╠Äqé≡é╜é╟éΦüAïAé┴é─é½é╜éτÉ▀é╠ object é≡Åoù═é╡üAé╗éΩé⌐
-
- éτüAëEæñé╠Äqé≡é╜é╟éΦé▄é╖üBé▄é│é╔üAÆ╩éΦé¬é»Åçé╠ÆΦï`é╗é╠éαé╠é┼é╖é╦üB
-
- print-object é═üAobject é≡ò\Īé╖éΘé╜é▀é╠âüâ\âbâhé┼é╖üBé▒é╠âüâ\âbâhéαèi
-
- ö[é╖éΘâfü[â^é╔ìçéφé╣é─ÆΦï`é╡é─é¿é½é▄é╖üBé╞éΦéáéªé╕üAăé╠éµéñé╚âüâ\âbâhé≡
-
- ÆΦï`é╡é─é¿é»é╬éóéóé┼é╡éσéñüB
-
-
- List 31 : object é╠ò\Ī
-
- 1 (defmethod print-object ((data t))
- 2 (print data))
-
-
- é╟é±é╚âfü[â^î^é┼éα print é┼ò\Īé╖éΘé▒é╞é¬é┼é½é▄é╖üBé▒éΩé┼òsÅ\ò¬é╠ÅΩìç
-
- é═üAé╗é╠âfü[â^î^ÉΩùpé╠ print-object é≡ÆΦï`é╡é─é¡é╛é│éóüB
-
-
- é╞é▒éδé┼üAô±ò¬û╪é⌐éτâfü[â^é≡ìφÅ£é╖éΘé▒é╞éαé┼é½é▄é╖é¬üAÅ¡üXû╩ô|é╚é╠é┼ìí
-
- ë±é═Å╚ù¬é╡é▄é╖üBébî╛îΩé┼éµé»éΩé╬üAÉ┘ì∞é╠üuéyé╡ü[âéâôâLü[æµéPéQë± (îÄèºüE
-
- ôdö]ïΣèyòö VOL.95)üvé┼Å┌é╡é¡Éαû╛é╡é─éóéΘé╠é┼üAÄQìlé╔é╡é─é¡é╛é│éóüB
-
-
- é╗éΩé┼é═è╚ÆPé╚Ägùpùßé≡Īé╡é▄é╡éσéñüB
-
-
- (defvar *tree1* (make-instance 'Tree))
- (defvar *tree2* (make-instance 'Tree))
-
- (dotimes (x 10)
- (insert-tree *tree1* (rand)))
-
- (dolist (x '("setq" "print" "defun" "cond" "string"
- "number" "dolist" "right" "left" "object"))
- (insert-tree *tree2* x))
-
-
- ô±ò¬û╪ *tree1* é╔é═ÉöÆlé≡èiö[é╡üA*tree2* é╔é═ò╢ÄÜù±é≡èiö[é╡é▄é╖üBôûæR
-
- é┼é╖é¬üAò╢ÄÜù±öΣèrùpé╠âüâ\âbâh compare-object é≡ÆΦï`é╡é▄é╖üB
-
-
- List 32 : ò╢ÄÜù±é╠öΣèr
-
- 1 (defmethod compare-object ((s1 string) (s2 string))
- 2 (cond ((string= s1 s2) 0)
- 3 ((string< s1 s2) -1)
- 4 (t 1)))
-
-
- ò╢ÄÜù±é≡öΣèré╖éΘè╓Éö string=, string< é≡Ägé┴é─éóé▄é╖üBprint-tree é┼ô±
-
- ò¬û╪é≡ò\Īé╖éΘé╞ăé╠éµéñé╔é╚éΦé▄é╖üB
-
- Lisp > (print-tree *tree1*)
- 8110
- 10299
- 10742
- 21625
- 22672
- 28236
- 28451
- 30646
- 30976
- 31831
-
- Lisp > (print-tree *tree2*)
- "cond"
- "defun"
- "dolist"
- "left"
- "number"
- "object"
- "print"
- "right"
- "setq"
- "string"
-
-
- É│Åφé╔ô«ì∞é╡é─éóé▄é╖é╦üBô±ò¬û╪é≡æÇì∞é╖éΘâNâëâXé═êΩé┬é┼é╖é¬üAâfü[â^é≡öΣèr
-
- é╖éΘâüâ\âbâh compare-object é≡ÆΦï`é╖éΘé▒é╞é┼üAéáéτéΣéΘâfü[â^é╔æ╬ë₧é╖éΘé▒
-
- é╞é¬é┼é½é▄é╖üBé▒é╠éµéñé╔üAâIâuâWâFâNâgÄwîⁿé≡éñé▄é¡Ägéñé╞üAâvâìâOâëâÇé≡è╚
-
- îëé╔ïLÅqé╖éΘé▒é╞é¬é┼é½é▄é╖üB
-
-
- ìíë±ì∞ɼé╖éΘâvâìâOâëâÇé┼é═ô±ò¬û╪é≡Ägéñé▒é╞é═éáéΦé▄é╣é±é¬üAüuû╪ì\æóüvé≡
-
- Ägé┴é─âoâbâNâgâëâbâNé≡è╟ù¥é╡é▄é╖üBé▒é╠òöò¬é═Å¡üXô∩é╡éóé╠é┼é╖é¬üAô±ò¬û╪é╠
-
- æÇì∞é¬ù¥ë≡é┼é½éΩé╬æσÅΣòvé┼é╖üB
-
-
-
- üiédénéeüj
-